const express = require("express");
const router = express.Router();
const multer = require("multer");
const path = require("path");
const articleDB = require("../../database/article.js");

// 监听md文件上传的路由
router.post("/md", (req, res) => {
  // 存储md文件到服务器下的指定目录

  let name = null;
  // 配置multer中间件处理表单上传md文件
  let upload = multer({
    storage: multer.diskStorage({
      // 配置文件存储在服务器的哪个目录
      destination(req, file, callback) {
        callback(null, path.join(__dirname, "../../public/file/md"));
      },
      // 设置文件的名字（为了防重名）
      filename(req, file, callback) {
        let {ext} = path.parse(file.originalname);
        name = "md" + req.session.userInfo._id + new Date().getTime() + ext;
        callback(null, name);
      }
    })
  }).single("file");
  upload(req, res, async (err) => {
    // 上传失败
    if (err) {
      res.send({
        code: 9,
        message: "上传失败"
      });
    } else {
      console.log(name);
      res.send({
        code: 0,
        message: "md上传成功",
        mdUrl: `/file/md/${name}`
      });

    }
  });

});

// 监听封面图缩略图路由
router.post("/cover", (req, res) => {

  let name = null;
  // 配置multer中间件处理表单上传jpg文件
  let upload = multer({
    storage: multer.diskStorage({
      // 配置文件存储在服务器的哪个目录
      destination(req, file, callback) {
        callback(null, path.join(__dirname, "../../public/file/cover"));
      },
      // 设置文件的名字（为了防重名）
      filename(req, file, callback) {
        let {
          ext
        } = path.parse(file.originalname);
        name = "cover" + req.session.userInfo._id + new Date().getTime() + ext;
        callback(null, name);
      }
    })
  }).single("file");
  upload(req, res, (err) => {
    // 上传失败
    if (err) {
      res.send({
        code: 9,
        message: "封面上传失败"
      });
    } else {
      res.send({
        code: 0,
        message: "封面图上传成功",
        coverUrl: `/file/cover/${name}`
      });

    }
  });
});


// 监听文章数据的路由，添加   你这里只是监听了  提交文章数据的请求
//提交完文章后，跳转到文章详情页
router.post("/add", async (req, res) => {
  let {title,type,describe,mdUrl,coverUrl} = req.body;
  // 将文章数据存到数据库
  let doc =  await articleDB.create({
    title: title || undefined,
    type: type || undefined,
    describe: describe || undefined,
    mdUrl,
    coverUrl: coverUrl || undefined,
    author:req.session.userInfo._id,
  });
  console.log(doc, "==================doc============");
  res.send({code:0,message:"文章发表成功",data:{id:doc._id}});  //返回文章id数据


})

// 监听修改数据的路由
router.post("/update", async (req,res)=>{
  let {id,doc} = req.body;
  await articleDB.findByIdAndUpdate(id,doc);
  // id是否存在的校验
  res.send({
    code:0,
    message:"修改成功"
  })
})

// 删除文章路由
router.delete("/delete", async (req,res)=>{
  let {id} = req.body;
  await articleDB.findByIdAndDelete(id);
  res.send({
    code:0,
    message:"删除成功"
  })
})
module.exports = router;